package com.ddone.demo.controller;

import com.sun.xml.internal.bind.v2.TODO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

/**
 * @author ddone
 * @date 2024/3/22-11:28
 */
@Slf4j
@Controller
@RequestMapping("/request")
public class RequestHeaderController {
    /**
     *   想要获取header中 User-Agent 请求头！
     *  @RequestHeader("user-agent") 指定接收请求头
     *
     *  TODO: 形参列表默认接请求参数！ 其他都要特殊声明！
     * @param userAgent
     * @return
     */
    @GetMapping("/header")
    public String getHeader(@RequestHeader("user-agent") String userAgent){
        log.warn("userAgent = " + userAgent);
        log.warn("RequestHeaderController.getHeader");
        return "hello";
    }

    /**
     *
     *   接收cookie  @CookieValue 注解也是必须添加！
     *   @param value
     *   @param session
     *   @return
     *
     * //JSESSIONID= 值
     * @param value
     * @param session
     * @return
     */
    @GetMapping("/cookie")
    public String getCookie(@CookieValue(value = "JSESSIONID",required = false,defaultValue = "missing") String value,
                            HttpSession session){
        log.warn("value = " + value);
        log.warn("RequestHeaderController.getCookie");

        return "hello";
    }

    /**
     *
     *
     *  要求方法返回值为String
     *  默认： 逻辑视图 视图解析器，找到对应的页面
     *  转发： forward: /转发路径即可
     *  重定向： redirect: /重定向路径  注意： 他是项目下的相对路径 外部路径正常加http即可
     *
     * TODO: 方法的返回值类型 String 作用为了快速根据逻辑视图名找到视图！ 【财务 viewResolver】
     * TODO: 如果你想要转发或者重定向 只需要将方法返回值类型写成String
     *       转发：  forward: /路径    /项目下的资源
     *       重定向：redirect: /路径   /项目下的资源
     *
     * @param path
     * @return
     * http://localhost:8080/spring-mvc-demo/request/forward?path=/hello
     */
    @GetMapping("/forward")
    public  String forward(String path){
        log.warn("path = " + path);
        return "forward:"+path;
    }

    @GetMapping("redirect")
    public String redirect(String path){
        log.warn("path="+path);
        return "redirect:"+path;
    }
}
